package com.sunwayhorizo.health.platform.security.service.permission;

import java.util.List;

import javax.ejb.Local;

import com.sunwayhorizo.health.business.dto.ResultsDTO;
import com.sunwayhorizo.health.platform.security.persistent.SecurityResource;

@Local
public interface SecurityResourceManagerLocal{
	
	/**
	 * 新增资源级联包含 permissions，resourceDataTypes
	 * @param resource 实体   
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及实体生成的ID，若失败返回提示信息，标志为False
	 */
	ResultsDTO newSecurityResource(SecurityResource resource);
	
	/**
	 * 批量删除级联包含permissions，resourceDataTypes
	 * @param list 字符串List
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，若失败返回提示信息，标志为False
	 */
	ResultsDTO delSecurityResource(List<String> list);
	
	/**
	 * 修改资源级联包含permissions，不包含resourceDataTypes
	 * @param resource 实体
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，若失败返回提示信息，标志为False
	 */
	ResultsDTO updateSecurityResource(SecurityResource resource);
	
	/**
	 * 查询资源列表
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及资源实体列表，若失败返回提示信息，标志为False
	 */
	ResultsDTO findSecurityResourceList();

	/**
     * 查询根节点之外的资源列表
     * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及实体列表，若失败返回提示信息，标志为False
     */
    ResultsDTO findSecurityResourceListWithOutRootNode();
    
	/**
	 * 查询资源详细信息
	 * @param resourceId 实体ID
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及查询的资源实体，若失败返回提示信息，标志为False
	 */
	ResultsDTO findSecurityResourceDetailById(String resourceId);
	
	/**
	 * 查询资源列表树
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及查询的资源树列表，若失败返回提示信息，标志为False
	 */
	ResultsDTO findSecurityResourceTree();
	
	/**
	 * 通过角色Id获得已经授权的资源列表
	 * @param roleId 实体Id
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及查询的资源列表，若失败返回提示信息，标志为False
	 */
	ResultsDTO findSecurityResourceListByRoleId(String roleId);
	
	/**
	 * 通过账号Id获得已经授权的资源列表
	 * @param roleId 实体Id
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及查询的资源列表，若失败返回提示信息，标志为False
	 */
	ResultsDTO findSecurityResourceTreeByAccountIdJoinRole(String accountId);
	
	/**
	 * 通过账号Id获得已经屏蔽后的授权资源列表
	 * @param roleId 实体Id
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及查询的资源列表，若失败返回提示信息，标志为False
	 */
	ResultsDTO findSecurityResourceTreeByAccountIdJoinRoleWithScreen(String accountId);
	
	/**
	 * 通过角色Id获得已经授权的资源树列表
	 * @param roleId 实体Id
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及查询的资源树列表，若失败返回提示信息，标志为False
	 */
	ResultsDTO findSecurityResourceTreeByRoleId(String roleId);
	
	/**
	 * 对资源名称进行唯一性约束
	 * @param resourceId	实体ID
	 * @param resourceName	实体名称
	 * @return				返回ResultsDTO,若唯一返回提示信息，标志为True，若重复时返回提示信息，标志为False
	 */
	ResultsDTO validateUniqueSecurityResource(String resourceId,String resourceName);
	
	/**
	 * 通过资源Id查询权限列表
	 * @param resourceId	实体ID
	 * @return				返回ResultsDTO,若唯一返回提示信息，标志为True，以及查询的权限实体列表，若重复时返回提示信息，标志为False
	 */
	ResultsDTO findSecurityPermissionListByResourceId(String resourceId);
}